#!/usr/bin/python
# -*- coding: utf-8 -*-

# Importações

import os
import sys

# Procedimentos

def pasta( a = "~/magianegra/"):
    "Devolve a pasta selecionada"
    linha = sys.argv
    if len(linha) > 2:
        a = linha[2]
    # Iniciar aqui as condicionais do Windows (c, d, e, f, g, h, i, j, k, l, m)
    if a == "x":
        a = "./"
    if a == "d":
        a = "/cygdrive/d/"
    if a == "e":
        a = "/cygdrive/e/"
    if a == "f":
        a = "/cygdrive/f/"
    if a == "g":
        a = "/cygdrive/g/"
    if a == "h":
        a = "/cygdrive/h/"
    if a == "i":
        a = "/cygdrive/i/"
    if a == "j":
        a = "/cygdrive/j/"
    if a == "k" or a == "sd":
        a = "/cygdrive/k/"
    return a

# Procedimentos de identificação - Lêm em qualquer sítio

def ajuda():
    "Mostra a ajuda do programa magianegra"
    print "\n*** AJUDA ***\n"
    print "1º - Coloque as fotografias a processar na pasta magianegra\n"
    print "2º - Corra o programa magianegra da seguinte forma\n"
    print "magianegra -operação" 
    print "\nLista de operações de identificação:\n"
    print "-h\t\tAjuda"
    print "-ver\t\tVer os ficheiros"
    print "-mapa\t\tCriar um mapa com o nome mapa.txt"
    print "-id\t\tIdentificar propriedades das imagens"
    print "\nLista de operações de transformação:\n"
    print "-jpg\t\tTransformar as imagens da pasta em JPG's"
    print "-rgb\t\tConverte as imagens CMYK com perfil embutido em sRGB"
    print "-tamanho\tRedimensiona as imagens para 1600 pixeis de largura"
    print "-pbi\t\tConverter a preto e branco (RGB)"
    print "-pbn\t\tConverter a preto e branco (Grayscale)"
    print "-sepia\t\tConverter a sépia"
    print "-ac\t\tAlto contraste"
    print "\nLista de oprações de importação e exportação\n"
    print "-apagar\t\tApagar tudo o que estiver na pasta de trabalho"
    print "-video\t\tImportar os snapshots de video"
    print "\nO programa converte as imagens nessa pasta\n"
    print "Website: http://code.google.com/p/magianegra/\n"
    print "Realizado por Osvaldo Gago e licenciado segundo a GPL"
    print "Licença: http://www.gnu.org/licenses/gpl.html"

def ver():
    "Ver conteúdos de um àrvore de diectorias"
    a = 'ls -glhR --no-group ' + pasta ()
    os.system(a)

def mapa():
    "Ver conteúdos de um árvore de diectorias"
    a = 'ls -R ' + pasta () +' > ~/magianegra/mapa.txt'
    os.system(a)

def identificar():
    "Identifica as imagens"
    a = 'identify -format \"%f  Tipo:%m  Resol:%wx%h  Cor:%r  Bits:%z  Tam:%b \\n\\n\" ' + pasta() + "*"
    os.system(a)

# Procedimentos de transformação

def formatar():
    "Formata todas as imagens da pasta em jpg"
    d = "mogrify -format jpg " + "~/magianegra/" + "*"
    os.system(d)
    c = "mv ~/magianegra/*.jpg ~/.mn/temp/"
    os.system (c)
    b = "rm ~/magianegra/*"
    os.system (b)
    a = "mv ~/.mn/temp/* ~/magianegra/"
    os.system(a)

def rgb():
    "Converte as imagens da pasta no perfil alojado em .mn com o nome srgb.icc"
    a = "mogrify -profile ~/.mn/srgb.icc ~/magianegra/" + "*"
    os.system(a)

def tamanho():
    "Converte todas as imagens em 1600 px de largura"
    a = "mogrify -resize 1600 ~/magianegra/" + "*"
    os.system(a)

def pretoebranco():
    "Converte as imagens a preto e branco pelo metodo intensidade da cor"
    a = "mogrify -modulate 100,1 " + "~/magianegra/" + "*"
    os.system(a)


def pretoebranco2():
    "Converte as imagens a preto e branco pelo metodo médio"
    a = "mogrify -type GrayScale ~/magianegra/" + "*"
    os.system(a)

def sepiatone():
    "Converte as imagns em sépia"
    a = "mogrify -sepia-tone 82% " + "~/magianegra/" + "*"
    os.system(a)

def altocontraste():
    "Converte as imagens em alto contraste"
    a = "mogrify -monochrome " + "~/magianegra/" + "*"
    os.system(a)

def apagar():
    "Apaga tudo o que estiver na pasta magianegra"
    a = "rm -r " + "~/magianegra/" + "*"
    os.system(a)

# Procedimentos de importação e exportação

def video():
    "Move os snapshoots do VLC para a pasta magianegra e converte tudo em JPG"
    b = "mv ~/.vlc/*.png " + "~/magianegra/" # Se houver alteracao pasta mudar aqui
    os.system(b)
    c = "mogrify -format jpg " + "~/magianegra/" + "*"
    os.system(c)
    d = "rm  ~/magianegra/*.png"
    os.system(d)


# Programa principal

print " "
print "-" * 60
print "\nBem vindo ao magianegra, o programa de conversões de imagens.\n"

# Captura da opção de trabalho

linha = sys.argv
if len(linha) > 1:
    argumento = linha[1]

else:
    argumento = "-h"

if argumento == "-pbi":
    print "Convertendo a preto e branco as imagens da pasta. Aguarde..."
    pretoebranco()

elif argumento =="-pbn":
    print "Convertendo a preto e branco as imagens da pasta. Aguarde..."
    pretoebranco2()

elif argumento == "-sepia":
    print "Convertendo a sépia as imagens da pasta. Aguarde..."
    sepiatone()

elif argumento == "-ac":
    print "Convertendo a alto contraste as imagens da pasta. Aguarde..."
    altocontraste()


elif argumento == "-id":
    print "Identificando as fotografias na pasta\n"
    print "Nome do ficheiro - Tipo - Largura x Altura - RGB/CMYK/Gray - Bits/Canal - Tamanho em bytes\n"
    identificar()

elif argumento == "-apagar":
    print "Apagando todos os conteúdos da pasta"
    apagar()

elif argumento == "-jpg":
    print "Transformando as imagens da pasta em Jpeg's. Aguarde..."
    formatar()

elif argumento == "-video":
    print "Importando os screenshots de video e convertendo a Jpeg's. Aguarde..."
    video()

elif argumento == "-rgb":
    print "Convertendo as imagens em RGB. Aguarde..."
    rgb()

elif argumento == "-ver":
    print "Ver conteúdos da pasta " + pasta()
    ver()

elif argumento == "-mapa":
    print "Criar um mapa da pasta " + pasta()
    mapa()

elif argumento == "-tamanho":
    print "Alterando as imagens para 1600 pixeis de largura. Aguarde..."
    tamanho()

elif argumento == "-h" or argumento == "--help":
    ajuda()

else:
    print '\nComando inválido. Faça "magianegra -h" para ver comandos válidos\n'

# print comando
print "\nTerminado.\n"

